import java.util.Scanner;

/**
 *  DD1 连续最大和:
 *      一个数组有 N 个元素，求连续子数组的最大和。 例如：[-1,2,1]，和最大的连续子数组为[2,1]，其和为 3
 * 输入描述：
 *      输入为两行。 第一行一个整数n(1 <= n <= 100000)，表示一共有n个元素 第二行为n个数，
 *      即每个元素,每个整数都在32位int范围内。以空格分隔。
 * 输出描述：
 *      所有连续子数组中和最大的值。
 *
 * OJ链接: https://www.nowcoder.com/practice/5a304c109a544aef9b583dce23f5f5db?tpId=182&tqId=34613&ru=/exam/oj
 */

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        int sum = 0;

        // 输入的数中可能有负数. 让 result 等于最小的负值才好比较.
        int result = Integer.MIN_VALUE;

        for(int i = 0; i < n; ++i) {

            sum += in.nextInt(); // 中间和.
            result = Math.max(sum, result);

            // 求最大值负数不可取. 那么sum小于0的时候,应该将它置为0
            sum = Math.max(sum, 0);
        }

        System.out.println(result);
    }
}